﻿using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using Studio7i.Dominio;

namespace Studio7i.Persistencia.ADO
{
    public class ClienteDAO : IClienteDAO
    {

        // Métodos Listar
        public ICollection<Dominio.Cliente> ListarTodos()
        {
            string _Sentencia = "SELECT CodigoCliente, Nombres, Direccion FROM Cliente";
            ICollection<Dominio.Cliente> clientesEncontrados = new List<Dominio.Cliente>();
            Dominio.Cliente ClienteEncontrado = null;
            using (SqlConnection _Conexion = new SqlConnection(ConexionUtil.ObtenerCadena()))
            {
                _Conexion.Open();
                using (SqlCommand _Comando = new SqlCommand(_Sentencia, _Conexion))
                {
                    using (SqlDataReader _Resultado = _Comando.ExecuteReader())
                    {
                        while (_Resultado.Read())
                        {
                            ClienteEncontrado = new Dominio.Cliente();
                            ClienteEncontrado.CodigoCliente = _Resultado.GetInt32(0);
                            ClienteEncontrado.Nombres = _Resultado.GetString(1);
                            ClienteEncontrado.Direccion = (String)_Resultado["Direccion"];
                            clientesEncontrados.Add(ClienteEncontrado);
                        }
                    }
                }
            }
            return clientesEncontrados;
        }
        public ICollection<Dominio.Cliente> ListarXNombre(string nombre)
        {
            string _Sentencia = "SELECT CodigoCliente, Nombres, Direccion FROM Cliente WHERE Nombres LIKE '%'+@nombre+'%'";
            ICollection<Dominio.Cliente> clientesEncontrados = new List<Dominio.Cliente>();
            Dominio.Cliente ClienteEncontrado = null;
            using (SqlConnection _Conexion = new SqlConnection(ConexionUtil.ObtenerCadena()))
            {
                _Conexion.Open();
                using (SqlCommand _Comando = new SqlCommand(_Sentencia, _Conexion))
                {
                    _Comando.Parameters.Add(new SqlParameter("@nombre", nombre));
                    using (SqlDataReader _Resultado = _Comando.ExecuteReader())
                    {
                        while (_Resultado.Read())
                        {
                            ClienteEncontrado = new Dominio.Cliente();
                            ClienteEncontrado.CodigoCliente = _Resultado.GetInt32(0);
                            ClienteEncontrado.Nombres = _Resultado.GetString(1);
                            ClienteEncontrado.Direccion = (String)_Resultado["Direccion"];
                            clientesEncontrados.Add(ClienteEncontrado);
                        }
                    }
                }
            }
            return clientesEncontrados;
        }        

        public Dominio.Cliente Crear(Dominio.Cliente entidad)
        {
            throw new NotImplementedException();
        }

        public Dominio.Cliente Obtener(int id)
        {
            throw new NotImplementedException();
        }

        public Dominio.Cliente Modificar(Dominio.Cliente entidad)
        {
            throw new NotImplementedException();
        }

        public void Eliminar(Dominio.Cliente entidad)
        {
            throw new NotImplementedException();
        }

    }
}